home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
User's Choice Windows CD
/
User's Choice Windows CD (CMS Software)(1993).iso
/
windows5
/
winnet.zip
/
DRIVERS.DOC
< prev
next >
Wrap
Text File
|
1990-08-16
|
21KB
|
584 lines
User documentation for the packet driver collection
Russell Nelson
Clarkson University
Potsdam, NY 13676
nelson@clutx.clarkson.edu
The purpose of the packet drivers
Every PC Ethernet board is different. The 3c501 was, for
some time, the most popular board, and would have become the
defacto standard but for its poor performance. By the time 3Com
created a board with acceptable performance, so had many others,
and 3Com lost its lead. FTP Software, in order to support each
of these boards without losing its collective mind, created the
Packet Driver Spec (PDS).
Some boards use DMA, programmed I/O, shared memory, and/or
bus mastering. The PDS masks the differences between these
boards by defining a software interface to the boards. This
software interface is a software interrupt in the range between
0x60 (hex) and 0x80.
Document conventions
All numbers in this document are given in C-style
representation. Decimal is expressed as 11, hexadecimal is
expressed as 0x0B, octal is expressed as 013. All reference to
network hardware addresses (source, destination and multicast)
and demultiplexing information for the packet headers assumes
they are represented as they would be in a MAC-level packet
header being passed to the send_pkt() function.
Using the packet drivers
The packet driver must be installed prior to use. Since
each packet driver takes only approximately 1800 bytes, this is
best done in your autoexec.bat. Since the Ethernet boards
typically have jumpers on board, the packet driver must be
informed of the values of these jumpers (auto-configure is
possible, but can disturb other boards). The first parameter
is the software interrupt used to communicate with the packet
driver. And again, because each board is different, the rest of
the parameters will be different.
All parameters must be specified in C-style representation.
Decimal is expressed as 11, hexadecimal is expressed as 0x0B,
octal is expressed as 013. Any numbers that the packet driver
prints will be in the same notation.
Before installing the packet driver, you must choose a software
interrupt number in the range between 0x60 and 0x80. Some of
these interrupts are used for other purposes, so your first
choice may not work. See Appendix A for the section of Ralf
Brown's interrupt list between 0x60 and 0x80.
Running a packet driver with no specifications will give a
usage message. The parameters for each packet driver are
documented below.
Most drivers can now also be used in a PROM boot environment,
see PROMBOOT.NOT for how to use -d and -n options for that
purpose.
The -w switch is used for Windows. Install the packet driver
before running MS-Windows.
3Com 3C501
usage: 3C501 [-n] [-d] [-w] packet_int_no [int_no
[io_addr]]
The 3c501 driver requires two additional parameters -- the
hardware interrupt number and the I/O address. The defaults are
3 and 0x300.
3Com 3C503
usage: 3C503 [-n] [-d] [-w] packet_int_no [int_level(2-5)
[io_addr [cable_type]]]
The 3c503 driver requires three additional parameters --
the hardware interrupt number, the I/O address, and the cable
type. The 3c503 can be attached to thick or thin Ethernet
cables, and the selection is made in software. The cable type
parameter should be zero for thick, and one for thin. The
defaults are 2, 0x300, and 0 (thin). The 3c503 uses shared
memory whose address is set by jumpers, but the software can ask
the board what the address is.
3Com 3c505
usage: 3c505 [-n] [-d] [-w] packet_int_no [int_no [io_addr
[base_addr]]]
The 3c505 driver requires three additional parameters --
the hardware interrupt number, the I/O address, and the memory
base address. The defaults are 2 and 0x300 and 0xd000.
3Com 3c523
usage: 3c523 [-n] [-d] [-w] packet_int_no [int_no [io_addr
[base_addr]]]
The 3c523 driver requires three additional parameters --
the hardware interrupt number, the I/O address, and the memory
base address. The defaults are 3 and 0x300 and 0xc000.
ARCNET
usage: arcnet [-n] [-d] [-w] packet_int_no [int_no
[io_addr [base_addr]]]
The ARCNET driver requires three additional parameters --
the hardware interrupt number, the I/O address, and the memory
base address. The defaults are 5 and 0x2e0 and 0xd800. Note
that a packet driver client must specifically support ARCNET.
The only known client is Phil Karn's (KA9Q) networking package,
NOS.
AT&T
usage: at&t [-n] [-d] [-w] packet_int_no [int_no [io_addr
[base_addr]]]
The AT&T driver requires three additional parameters --
the hardware interrupt number, the I/O address, and the memory
base address. The defaults are 2 and 0x360 and 0xd000. This
driver supports the StarLAN 1, StarLAN 10 NAU, EN100 and StarLAN
Fiber NAU.
IBM Token Ring
usage: ibmtoken [-n] [-d] [-w] packet_int_no [adapter_no]
The IBM Token Ring packet driver requires one additional
parameters -- the adapter number. The default is zero. See
IBMTOKEN.DOC for more information.
Novell IPX
usage: ipxpkt [-n] [-d] [-w] packet_int_no
The ipxpkt packet driver simulates Ethernet on Novell IPX
protocol.
BICC Data Networks' ISOLAN 4110 ethernet
usage: isolan [-n] [-d] [-w] packet_int_no [int_no
[base_addr]]
The BICC Isolan requires three additional parameters --
the hardware interrupt number and the memory base address. The
defaults are 2 and 0xb800h.
Netbios
usage: nb [-n] [-d] [-w] packet_int_no ip.ad.dr.ess
[receive queue size]
The netbios packet driver transports IP packets over
NetBIOS.
Novell ne1000
usage: ne1000 [-n] [-d] [-w] packet_int_no [int_no
[io_addr]]
The ne1000 driver requires two additional parameters --
the hardware interrupt number and the I/O address. The defaults
are 3 and 0x300.
Novell ne2000
usage: ne2000 [-n] [-d] [-w] packet_int_no [int_no
[io_addr]]
The ne2000 driver requires two additional parameters --
the hardware interrupt number and the I/O address. The defaults
are 2 and 0x300.
Racal/Interlan (Formerly Interlan) NI5010
usage: NI5010 [-n] [-d] [-w] packet_int_no [int_no
[io_addr]]
The NI5010 driver requires two additional parameters --
the hardware interrupt number and the I/O address. The defaults
are 3 and 0x300.
Racal/Interlan (Formerly Micom-Interlan) NI5210
usage: ni5210 [-n] [-d] [-w] packet_int_no [int_no
[io_addr [base_addr]]]
The NI5210 driver requires three additional parameters --
the hardware interrupt number, the I/O address, and the memory
base address. The defaults are 2 and 0x360 and 0xd000. Note
that Interlan sets the default memory base to 0xa000, which is
brain-damaged, because that area of memory is specifically
reserved for video adapters, and in fact the EGA and VGA use
it.
Racal/Interlan NI6510
usage: ni6510 [-n] [-d] [-w] packet_int_no [int_no
[io_addr]]
The ni6510 driver has two additional parameters -- the
hardware interrupt number and the I/O address. The defaults are
2 and auto-sense. These parameters do not need to be set unless
the auto-sense routine fails, or otherwise disrupts operation of
your PC.
Racal-Interlan (Formerly Micom-Interlan) NI9210
usage: ni9210 [-n] [-d] [-w] packet_int_no [int_no
[io_addr [base_addr]]]
The ni9210 driver requires three additional parameters --
the hardware interrupt number, the I/O address, and the memory
base address. The defaults are 2 and 0x360 and 0xd000.
SLIP8250
usage: SLIP8250 [-n] [-d] [-w] packet_int_no [-h]
[driver_class] [int_no]
[io_addr] [baud_rate] [send_buf_size] [recv_buf_size]
The driver_class should be SLIP, KISS, AX.25, or a
number.
The SLIP8250 driver is not strictly an Ethernet adapter,
however some software packages (such as KA9Q's NET and NCSA
Telnet) support Serial Line IP (SLIP). SLIP must be specially
supported because it doesn't use ARP and has no hardware
addresses prepended to its packets. The PDS is not clear on
this, but the packet driver does the SLIP encoding. The
parameters are as follows. The -h flag is included if you wish
to use hardware handshaking (the packet driver will then suspend
the transmission of characters while CTS is low). The
driver_class is the class that is returned to a client of the
packet driver spec in the driver_info call. The int_no is the
hardware interrupt number, defaults to 4 (COM1). The io_addr is
the hardware I/O address, defaults to 0x3f8 (COM1). The
baud_rate defaults to 4800 baud. The send_buf_size and
recv_buf_size default to 3000 each.
Tiara Lancard
usage: tiara [-n] [-d] [-w] packet_int_no [int_no
[io_addr]]
The Tiara driver runs the Tiara LANCARD/E cards, both
eight and
sixteen bit cards. The Tiara driver requires two additional
parameters,
the hardware interrupt number, and the I/O port.
Western Digital WD8003 E EBT EB ET/A and E/A
usage: WD8003E [-n] [-d] [-w] packet_int_no [-o]
[int_level [io_addr [mem_base]]]
The WD8003E driver runs the Western Digital E, EBT, EB,
ET/A, and E/A Ethernet cards. The WD8003E requires three
additional parameters -- the hardware interrupt number, the I/O
address, and the memory base address. The defaults are 2 and
0x280 and 0xd000. The wd8003 cards do not enable their memory
until configuration time. Some 386 memory mappers will map
memory into the area that the card intends to use. You should
be able to configure your software to leave this area of memory
alone. Also driver will refuse to map memory into occupied
memory. The occupied memory test fails on some machines, so the
optional switch -o allows you to disable the check for occupied
memory.
Errorlevels
Some of the packet drivers return error codes. Some of
these error codes indicate fatal errors, and some are merely
warnings. For the moment, you must consult the source to see
what the errorcodes mean. For example, pktchk returns 0 if a
packet driver exists at a given address, and 1 if not. You
might use it in a batch file that only installs a packet driver
if one is not found.
rem only install the packet driver if there isn't one
rem already.
pktchk 0x7e
if errorlevel 0 goto gotit
ni5210 0x7e
:gotit
The "errorlevel" test is true if the errorlevel is less
than or equal to the parameter.
Utility Programs
There are also several utility programs for packet
drivers:
PKTADDR
usage: pktaddr packet_int_no [ethernet_addr]
If the second argument is given, the Ethernet address of
the given packet driver is set. The Ethernet address is printed
out.
PKTALL
usage: pktall packet_int_no
All packets are received and discarded from the given
packet driver. This program is of most use with PKTMODE and
TRACE.
PKTCHK
usage: pktchk packet_int_no [packet_int_no]
Test for existance of a packet driver. Returns with
errorlevel 0 if the specified interrupt has a packet driver. If
the second argument is given, all interrupts in the range are
checked for a packet driver. If no packet driver is found at
all, errorlevel 1 is returned.
PKTMODE
usage: pktmode packet_int_no [receive_mode]
If the second argument is given, the receive mode of the
given packet driver is set. A decimal number from the list of
modes should be used. All the possible modes are printed out.
Unimplemented modes are marked with "xx", and the current mode
is marked with "->".
PKTMULTI
usage: pktmulti packet_int_no [-f filename | address ...]
The specified addresses are set as allowed multicast
addresses. If no list of addresses is given, then the current
list of addresses is printed. The
addresses may either be specified on the command line, or in a
file using the -f option. When a file is used, any whitespace
in the file is ignored.
PKTSTAT
usage: pktstat first_int_no [last_int_no]
The statistics for all packet drivers in the given range
are printed. The default range is 0x60 through 0x80. The
meanings of the columns are given below.
pkt_in is the number of packets ever received by this driver.
pkt_out is the number of packets ever transmitted by this
driver.
byt_in is the number of bytes ever received by this driver.
byt_out is the number of bytes ever transmitted by this driver.
pk_drop Packets dropped because there was no handler for that
Ethernet packet type.
err_in Dependent upon the packet driver.
err_out Dependent upon the packet driver.
PKTSEND
usage: pktsend packet_int_no [-r] [-f filename | packet]
The specified packet is sent using the specified packet
driver. The -r option says to repeat sending as fast as
possible. You shouldn't use this option very often. The packet
may either be specified on the command line, or in a file using
the -f option. When a file is used, any whitespace in the file
is ignored.
TERMIN
usage: termin [-s] packet_int_no
The specified packet driver is terminated, and its memory
recovered.
The s-option (stop) is used to prepare for termination.
The in-use flag for all handles are cleared. This prevents
upcalls to handlers that are to be removed and also makes it
possible to later terminate the packet driver even though
handles are not released. Actually, doing termin -s after prom
boot is like cutting the branch you are sitting on. Recipe for
removing packet driver, IPX and NET:
pktdrvr 0x7c ....
MARKNET C:IPX&NET3.MRK
PDIPX
NET3
. . .
NET3 u ; unload netx to avoid
communication timeout
TERMIN -s 0x7c ; pkt drvr no longer calls any
nonexistent rcvrs
RELNET ipxet3.mrk ; IPX is "removed"
TERMIN 0x7c ; It is now safe to terminate the
packet driver
TRACE
usage: trace packet_int_no [buffer_size]
Trace is very useful for debugging packet driver
troubles. Trace lets you trace all transactions between a user
program and the packet driver. The transactions are stored in a
memory buffer whose size is set with buffer_size. The default
size is 10,000 bytes.
When you run trace, it sets itself up and then spawns
COMMAND.COM so that you can run a network program that uses the
packet driver. After you quit your network session, you issue
an "EXIT" command. This returns you to trace, which writes the
transaction log to "TRACE.OUT". The following program, DUMP,
interprets TRACE.OUT.
DUMP
usage: dump
Interprets the contents of TRACE.OUT as written by TRACE.
Who?
See the file support.txt for a listing of all the people who
contributed packet drivers.
Appendix A
Interrupt usage in the range 0x60 through 0x80
60 -- -- reserved for user interrupt
60 -- -- FTP Driver - PC/TCP Packet Driver Specification
60 01 FF FTP Driver - DRIVER INFO
60 02 -- FTP Driver - ACCESS TYPE
60 03 -- FTP Driver - RELEASE TYPE
60 04 -- FTP Driver - SEND PACKET
60 05 -- FTP Driver - TERMINATE DRIVER FOR HANDLE
60 06 -- FTP Driver - GET ADDRESS
60 07 -- FTP Driver - RESET INTERFACE
60 11 -- 10-NET - LOCK AND WAIT
60 12 -- 10-NET - LOCK
60 13 -- 10-NET - UNLOCK
60 20 -- FTP Driver - SET RECEIVE MODE
60 21 -- FTP Driver - GET RECEIVE MODE
60 24 -- FTP Driver - GET STATISTICS
61 -- -- reserved for user interrupt
62 -- -- reserved for user interrupt
63 -- -- reserved for user interrupt
64 -- -- reserved for user interrupt
65 -- -- reserved for user interrupt
66 -- -- reserved for user interrupt
67 -- -- LIM EMS
...
67 DE 00 Virtual Control Program Interface - INSTALLATION CHECK
...
68 01 -- APPC/PC
...
69 -- -- unused
6A -- -- unused
6B -- -- unused
6C -- -- system resume vector (CONVERTIBLE)
6C -- -- DOS 3.2 Realtime Clock update
6D -- -- VGA - internal
6E -- -- unused
6F -- -- Novell NetWare - PCOX API (3270 PC terminal interface)
6F 00 -- 10-NET - LOGIN
...
70 -- -- IRQ8 - AT/XT286/PS50+ - REAL-TIME CLOCK
71 -- -- IRQ9 - AT/XT286/PS50+ - LAN ADAPTER 1
72 -- -- IRQ10 - AT/XT286/PS50+ - RESERVED
73 -- -- IRQ11 - AT/XT286/PS50+ - RESERVED
74 -- -- IRQ12 - PS50+ - MOUSE INTERRUPT
75 -- -- IRQ13 - AT/XT286/PS50+ - 80287 ERROR
76 -- -- IRQ14 - AT/XT286/PS50+ - FIXED DISK
77 -- -- IRQ15 - AT/XT286/PS50+ - RESERVED
78 -- -- not used
79 -- -- not used
7A -- -- Novell NetWare - LOW-LEVEL API
7A -- -- AutoCAD Device Interface
7B -- -- not used
7C -- -- not used
7D -- -- not used
7E -- -- not used
7F -- -- HDILOAD.EXE - 8514/A VIDEO CONTROLLER INTERFACE
7F -- -- HLLAPI (High-Level Language API)
80 -- -- reserved for BASIC